# -*- coding: utf-8 -*-            
# @Author : chenliang
# @Time : 2025/7/10 08:40


import os
import zipfile


def extract_all_zips(input_folder, output_folder):
    """
    解压指定文件夹下所有 ZIP 文件到目标文件夹

    :param input_folder: 需要解压的 ZIP 文件所在目录（例如：'./zips'）
    :param output_folder: 解压后的文件存放目录（例如：'./extracted_files'）
    """
    # 确保输出目录存在
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)
        print(f"创建输出目录：{output_folder}")

    # 遍历输入目录中的所有文件
    for filename in os.listdir(input_folder):
        if filename.endswith('.zip'):
            zip_path = os.path.join(input_folder, filename)
            try:
                with zipfile.ZipFile(zip_path, 'r') as zip_ref:
                    # 解压到 output_folder/zip文件名（不带扩展名）的子目录
                    zip_name = os.path.splitext(filename)[0]
                    extract_to = os.path.join(output_folder, zip_name)
                    zip_ref.extractall(extract_to)
                    print(f"成功解压：{zip_path} → {extract_to}")
            except zipfile.BadZipFile:
                print(f"错误：无效的 ZIP 文件 → {zip_path}")
            except Exception as e:
                print(f"错误：处理 {zip_path} 时出错 → {str(e)}")


# 使用示例
if __name__ == "__main__":
    input_directory = input('待解压的文件地址：')

    output_directory = input_directory + '_' + 'New'

    # 创建目录
    os.makedirs(output_directory, exist_ok=True)

    extract_all_zips(input_directory, output_directory)
